/**
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package org.python.pydev.editor.actions;
import java.util.Iterator;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.text.Region;
import org.python.pydev.core.log.Log;
import org.python.pydev.core.structure.FastStack;
import org.python.pydev.editor.PyEdit;
/**
* Deselects the scope based on a previous scope selection.
*
* @author fabioz
*/
public class PyScopeDeselection extends PyAction {
public void run(IAction action) {
try {
PyEdit pyEdit = getPyEdit();
FastStack<IRegion> stack = PyScopeSelection.getCache(pyEdit);
ITextSelection selection = (ITextSelection) pyEdit.getSelectionProvider().getSelection();
Region region = new Region(selection.getOffset(), selection.getLength());
Iterator<IRegion> it = stack.topDownIterator();
while (it.hasNext()) {
IRegion iRegion = it.next();
stack.pop(); //After getting the latest, pop it.
if (iRegion.equals(region)) {
if (stack.size() > 0) {
IRegion peek = stack.peek();
pyEdit.setSelection(peek.getOffset(), peek.getLength());
}
break;
}
}
} catch (Exception e) {
Log.log(e);
}
}
}